package com.shujia.wyh.day15;
/*
        public boolean equals(Object obj)指示一些其他对象是否等于此。
        通过观察发现，我们使用equals方法后，比较的结果和我们想的不太一样，我们要想知道这个方法是如何实现
        就应该去看源码，按住ctrl键+鼠标左键。
        观察源码发现：
        public boolean equals(Object obj) {
            return (this == obj);
        }
        Object中equals方法底层默认调用的技术依旧是==，而==比较引用数据类型，比较的是地址值，而是s1和s2是两个不同的
        对象，所以地址值不是一样的，所以equals比较的结果是false。
        更多的情况下，我们比较引用数据类型对象的时候，想要比较的是他们成员变量之间的值是否一样，而不是比较地址值。
        所以，在想要比较成员变量值是否一样的情况下，子类重写equals方法，也不需要自己手动给出，自动生成即可。



        ==: 返回的结果是boolean类型
            基本数据类型：比较的是两边的值是否相同
            引用数据类型：比较的是两边的地址值是否相同

 */
public class ObjectDemo1 {
    public static void main(String[] args) {
        Student s1 = new Student("李毅", 18);
        Student s2 = new Student("李毅", 18);

//        System.out.println(s1==s2); //false
        Student s3 = s1;
//        System.out.println(s1==s3); // true

        System.out.println("======================================");
        System.out.println(s1.equals(s2)); // false // true
        System.out.println(s1.equals(s1)); // true
        System.out.println(s1.equals(s3)); // true
        System.out.println("======================================");
        Demo d2 = new Demo("李毅", 18);
        System.out.println(s1.equals(d2));


    }
}
